Don't hide windows and popovers in init()
authorTimm Bäder <mail@baedert.org>
Fri, 20 Jan 2017 09:37:29 +0000 (10:37 +0100)
committerTimm Bäder <mail@baedert.org>
Fri, 20 Jan 2017 20:51:05 +0000 (21:51 +0100)
Instead, don't make them visible in gtk_widget_init in the first place.

gtk/gtkpopover.c
gtk/gtkwidget.c
gtk/gtkwindow.c

index 4d98abd820384e5d22c92fe0e953e72e191d4e42..4a6c753c96fb5a072471c6645dc99d9e25a94b9a 100644 (file)
@@ -220,8 +220,6 @@ gtk_popover_init (GtkPopover *popover)
 
   context = gtk_widget_get_style_context (GTK_WIDGET (popover));
   gtk_style_context_add_class (context, GTK_STYLE_CLASS_BACKGROUND);
-
-  gtk_widget_hide (widget);
 }
 
 static void
index d216298f817a5c90a31c7560cce0b687ca985098..e46bcce51cb274f6821c06a6f3582b5877ec0b8b 100644 (file)
@@ -772,6 +772,9 @@ static gboolean event_window_is_still_viewable (GdkEvent *event);
 
 static void gtk_widget_update_input_shape (GtkWidget *widget);
 
+static gboolean gtk_widget_class_get_visible_by_default (GtkWidgetClass *widget_class);
+
+
 /* --- variables --- */
 static gint             GtkWidget_private_offset = 0;
 static gpointer         gtk_widget_parent_class = NULL;
@@ -3783,7 +3786,7 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class)
   widget->priv = gtk_widget_get_instance_private (widget); 
   priv = widget->priv;
 
-  priv->visible = TRUE;
+  priv->visible = gtk_widget_class_get_visible_by_default (g_class);
   priv->child_visible = TRUE;
   priv->name = NULL;
   priv->allocation.x = -1;
@@ -3843,7 +3846,7 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class)
 
   priv->cssnode = gtk_css_widget_node_new (widget);
   gtk_css_node_set_state (priv->cssnode, priv->state_flags);
-  gtk_css_node_set_visible (priv->cssnode, TRUE);
+  gtk_css_node_set_visible (priv->cssnode, priv->visible);
   /* need to set correct type here, and only class has the correct type here */
   gtk_css_node_set_widget_type (priv->cssnode, G_TYPE_FROM_CLASS (g_class));
 }
@@ -14536,6 +14539,13 @@ gtk_widget_class_set_css_name (GtkWidgetClass *widget_class,
   priv->css_name = g_intern_string (name);
 }
 
+static gboolean
+gtk_widget_class_get_visible_by_default (GtkWidgetClass *widget_class)
+{
+  return !(GTK_IS_WINDOW_CLASS (widget_class) ||
+           GTK_IS_POPOVER_CLASS (widget_class));
+}
+
 /**
  * gtk_widget_class_get_css_name:
  * @widget_class: class to set the name on
index 66e804ce06496e636bb638518a1e8f814e782915..f22b9ec91d725a90cfd12b7a17ca767c176686a3 100644 (file)
@@ -1714,9 +1714,6 @@ gtk_window_init (GtkWindow *window)
                      GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP,
                      dnd_dest_targets, G_N_ELEMENTS (dnd_dest_targets),
                      GDK_ACTION_MOVE);
-
-
-  gtk_widget_hide (GTK_WIDGET (window));
 }
 
 static void